package com.info.zhiduoduo.repository.entity.invoice;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * <p>
 * 发票管理
 * </p>
 *
 * @author bob
 * @since 2019-01-03
 */
@Data
@Accessors(chain = true)
@TableName("zdd_invoice")
public class Invoice extends Model<Invoice> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 申请编号
     */
    private String applyno;
    /**
     * 项目(需求)ID
     */
    private Integer projectid;
    /**
     * 项目名
     */
    private String projectname;
    /**
     * 项目类型 1：普通项目 2：智众包项目 3: 项目 4:长期订单项目 5：委托接单- 项目 6: 委托接单-智众包项目；参考ProjectType常量类
     */
    @TableField("project_type")
    private Integer projectType;
    /**
     * 1.普票2专票
     */
    private Integer invoicetype;
    /**
     * 开票金额
     */
    @TableField("invoice_amount")
    private BigDecimal invoiceAmount;
    /**
     * 发票内容
     */
    private String content;
    /**
     * 开票地
     */
    @TableField("tax_city")
    private Integer taxCity;

    private Integer userid;
    /**
     * 用户名
     */
    private String username;

    /**
     * 真实姓名
     */
    @TableField(exist = false)
    private String actualName;
    /**
     * 身份证ID
     */
    @TableField(exist = false)
    private String idno;

    /**
     * 创客税号
     */
    @TableField("user_taxno")
    private String userTaxno;
    /**
     * 创客开户银行
     */
    @TableField("user_acctbank")
    private String userAcctbank;
    /**
     * 创客银行卡号
     */
    @TableField("user_acctno")
    private String userAcctno;
    /**
     * 创客电话
     */
    @TableField("user_telephone")
    private String userTelephone;
    /**
     * 发票收件地址
     */
    @TableField("user_address")
    private String userAddress;
    /**
     * 企业ID
     */
    private Integer compid;
    /**
     * 企业名称
     */
    private String compname;
    /**
     * 企业税号
     */
    @TableField("comp_taxno")
    private String compTaxno;
    /**
     * 企业开户银行
     */
    @TableField("comp_acctbank")
    private String compAcctbank;
    /**
     * 企业银行卡号
     */
    @TableField("comp_acctno")
    private String compAcctno;
    /**
     * 企业电话
     */
    @TableField("comp_telephone")
    private String compTelephone;
    /**
     * 企业收件地址
     */
    @TableField("comp_address")
    private String compAddress;
    /**
     * 企业联系人
     */
    private String contactname;
    /**
     * 企业联系电话
     */
    private String contactphone;
    /**
     * 是否是策略性开票 0:否 1:是
     */
    private int strategy;
    /**
     * 策略性开票日期
     */
    @TableField("strategy_date")
    private Date strategyDate;
    /**
     * 策略性开票备注
     */
    @TableField("strategy_remark")
    private String strategyRemark;
    /**
     * 发票库存不足 0:否 1:是
     */
    private Integer understock;
    /**
     * 1等待受理 2申请中 3受理中 4已完成(出票) 5被拒绝 6发票作废
     */
    private Integer state;
//    /**
//     * 1:线上支付 2:线下支付
//     */
//    @TableField("pay_type")
//    private Integer payType;
    /**
     * 线下应付金额(服务费+税费)
     */
    @TableField("pay_amount")
    private BigDecimal payAmount;
    /**
     * 线下支付人: 0:无 1:创客 2:企业
     */
    private Integer payer;
    /**
     * 线下支付状态: 1:未支付 2:已支付 3:已处理
     */
    @TableField("offline_pay_state")
    private Integer offlinePayState;
    /**
     * 项目款付款凭证
     */
    @TableField("pay_receipt")
    private String payReceipt;
    /**
     * 支付时间
     */
    private Date paytime;
    /**
     * 受理时间
     */
    private Date accepttime;
    /**
     * 完成时间
     */
    private Date finishtime;
    /**
     * 后台管理员ID
     */
    private Integer managerid;
    /**
     * 拒绝理由º
     */
    @TableField("reject_reason")
    private String rejectReason;
    /**
     * 发票备注
     */
    private String remark;
    /**
     * 企业发票备注
     */
    @TableField("company_remark")
    private String companyRemark;
    /**
     * 0:纸质发票 1：电子发票
     */
    private Integer type;
    /**
     * 电子邮箱
     */
    private String email;
    /**
     * 快递公司
     */
    private String express;
    /**
     * 快递单号
     */
    private String expressno;
    /**
     * 发票申请时间
     */
    private Date applyTime;
    /**
     * 开票操作人员id
     */
    @TableField("open_adminid")
    private Integer openAdminid;
    /**
     * 项目完成时间
     */
    private Date projectfinishtime;
    /**
     * 开票开始时间
     */
    private Date starttime;
    private Date createtime;

    /**
     * 未开 发票逾期理由
     */
    @TableField("reasons_for_overdue")
    private String reasonsForOverdue;

    /**
     * 补录时间
     */
    @TableField("supplement_time")
    private Date supplementTime;

    /**
     * 是否是补录：0：不是，1.是
     */
    @TableField("whether_supplement")
    private Integer whetherSupplement;

    /**
     * 补录人员ID
     */
    @TableField("supplement_personnel")
    private Integer supplementPersonnel;

    /**
     * 发票作废原因
     */
    private String cancellationReason;

    /**
     * 发票作废证据截图
     */
    private String cancellationEvidence;

    /**
     * 申请开票日期, 字符串日期格式: yyyy-MM
     */
    @TableField("apply_invoice_date")
    private Date applyInvoiceDate;

    /**
     * 30万审批截图
     */
    @TableField("approval_screenshot")
    private String approvalScreenshot;

    @ApiModelProperty("实际发单企业ID")
    private Integer actualCompanyId;

    @ApiModelProperty("运营主体id")
    private Integer partyId;

    @ApiModelProperty("项目中的城市ID")
    private Integer projectCityId;

    @ApiModelProperty("企业支付方式Id")
    private Integer payId;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
